[INV-MIGRATION-170] Создать таблицу menu_db.menu_templates
Развертывание таблиц кулинарной истории и порционных балансов готовых блюд
NoteКраткая карточка задачи
- Репозиторий / Компонент:
fridge-service(Базаfridge_db, контур INVENTORY). - Целевая СУБД: PostgreSQL v15+.
- Ссылка на Метод: Интерфейс и состояния экрана авторизации
- Статус: Готово к реализации
- Инструкция по шагам: Выполнить DDL-миграцию для создания таблиц фиксации истории ручной готовки и регистрации сущностей готовых блюд (
cooking_history) с поддержкой дробного квантования («порционного откусывания»). Таблицы создаются внутриfridge_dbдля обеспечения ACID-целостности мутации балансов (Шаг 8) без распределенных транзакций.
-- Скрипт миграции для fridge_db (Контур INVENTORY)
CREATE TABLE IF NOT EXISTS fridge_db.cooking_history (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
home_group_id VARCHAR(64) NOT NULL,
trace_id VARCHAR(128) NOT NULL, -- X-Request-ID для сквозного аудита
dish_name VARCHAR(255) NOT NULL, -- Очищенное цензором название блюда
space_type VARCHAR(16) NOT NULL, -- 'HOME' / 'OFFICE'
total_portions NUMERIC(5, 2) NOT NULL, -- Исходное количество порций
remaining_portions NUMERIC(5, 2) NOT NULL, -- Текущий остаток порций под списание
spent_ingredients JSONB NOT NULL, -- Массив списанного сырья: [{"food_element_id": "X", "quantity": 100}]
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Индекс для отображения содержимого холодильника пользователю и порционного списания
CREATE INDEX IF NOT EXISTS idx_cooking_active_dishes
ON fridge_db.cooking_history (home_group_id)
WHERE remaining_portions > 0.00;